Val 函数

更新: 2008 年 7 月

以适当类型的数值形式返回包含于字符串内的数字。

Public Overloads Function Val(ByVal InputStr As String) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Object) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Char) As Integer

参数

  • Expression, InputStr
    必需。任何有效的 String 表达式、Object 变量或 Char 值。如果 Expression 是 Object 类型,它的值必须可以转换为 String,否则,将出现 ArgumentException 错误。

异常

异常类型

错误号

条件

OverflowException

6

InputStr 太大。

ArgumentException

438

Object 类型表达式不能转换为 String。

如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象)比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。

说明:

在响应某些不常见的数字格式时,可能会引发 InvalidCastException 异常(错误号 13)。有关此错误的更多信息,请参见类型不匹配 (Visual Basic)。例如,下面的代码引发该异常。

' These examples cause run-time errors.

'Console.WriteLine(Val("1.34%"))

'Console.WriteLine(Val("1.34&"))

编译器会捕获格式设置为 Double 的数字与 Integer 和 Long 类型字符之间的冲突(如果该冲突未隐藏在字符串中)。

' These examples cause compiler errors.

'Dim m = 1.34%

'Dim n = 1.34&

备注

Val 函数在发现第一个不能将其识别为数字的字符时,将停止读入字符串。那些通常被认为是数值的一部分的符号和字符,例如美元符号与逗号,都不能被识别。但是该函数可以识别基数前缀 &O(八进制)和 &H(十六进制)。空白、制表符和换行符都会从参数中排除。

下面的调用返回值 1615198。

Val(" 1615 198th Street N.E.") 

下面的调用返回十进制值 -1。

Val("&HFFFF") 
说明:

Val 函数只将句点 (.) 识别为有效的小数点分隔符。当使用不同的小数点分隔符时(如在国际应用程序中),则应使用 CDbl 或 CInt 将字符串转换为数字。若要将特定区域中的数字的字符串表示形式转换为数值,请使用 Numeric 类型的 Parse(String, IFormatProvider) 方法。例如,将字符串转换为 Double 时,使用 Double.Parse

示例

下面的示例使用 Val 函数返回每个字符串中包含的数字。遇到第一个不能解释为数位、数字修饰符、数字标点或空格的字符时,Val 将停止转换。

Dim valResult As Double
' The following line of code sets valResult to 2457.
valResult = Val("2457")
' The following line of code sets valResult to 2457.
valResult = Val(" 2 45 7")
' The following line of code sets valResult to 24.
valResult = Val("24 and 57")

要求

命名空间:Microsoft.VisualBasic

**模块:**Conversion

**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)

请参见

参考

Str 函数

类型转换函数

OverflowException

InvalidCastException

ArgumentException

修订记录

日期

修订记录

原因

2008 年 7 月

在“异常”一节中增加了说明以介绍何时会发生 InvalidCastException 异常。

客户反馈。